<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 3.2//EN">
<html><head><title>Programming in Lua : 2.6</title>
<link rel="stylesheet" type="text/css" href="pil.css">
</head>
<body>
<p class="warning">
<A HREF="contents.html"><IMG TITLE="Programming in Lua (first edition)" SRC="capa.jpg" ALT="" ALIGN="left"></A>This first edition was written for Lua 5.0. While still largely relevant for later versions, there are some differences.<BR>The third edition targets Lua 5.2 and is available at <A HREF="http://www.amazon.com/exec/obidos/ASIN/859037985X/theprogrammil3-20">Amazon</A> and other bookstores.<BR>By buying the book, you also help to <A HREF="../donations.html">support the Lua project</A>.
</p>
<table width="100%" class="nav">
<tr>
<td width="10%" align="left"><a href="2.5.html"><img border="0" src="left.png" alt="Previous"></a></td>
<td width="80%" align="center"><a href="contents.html"><font face="Helvetica,Arial,sanserif">
<font color="gray">Programming in </font><font color="blue"> Lua</font>
</font></a></td>
<td width="10%" align="right"><a href="2.7.html"><img border="0" src="right.png" alt="Next"></a></td>
</tr>
<tr>
<td width="10%" align="left"></td>
<td width="80%" align="center"><a href="contents.html#P1">Part I. The Language</a>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
<a href="contents.html#2">Chapter 2. Types and Values</a></td>
<td width="10%" align="right"></td></tr>
</table>
<hr/>
<p><h2>2.6 &ndash; Functions</h2>

<p>

<p>Functions are first-class values in Lua.
That means that functions can be stored in variables,
passed as arguments to other functions, and returned as results.
Such facilities give great flexibility to the language:
A program may redefine a function to add new functionality,
or simply erase a function to create a secure environment
when running a piece of untrusted code
(such as code received through a network).
Moreover, Lua offers good support for functional programming,
including nested functions with proper lexical scoping; just wait.
Finally, first-class functions play a key role in Lua's object-oriented
facilities, as we will see in <a href="16.html#ObjectSec">Chapter 16</a>.

<p>Lua can call functions written in Lua and
functions written in C.
All the standard library in Lua is written in C.
It comprises functions for string manipulation,
table manipulation, I/O,
access to basic operating system facilities,
mathematical functions, and debugging.
Application programs may define other functions in C.

<hr/>
<table width="100%" class="nav">
<tr valign="top">
<td width="90%" align="left">
<small>
  Copyright &copy; 2003&ndash;2004 Roberto Ierusalimschy.  All rights reserved.
</small>
</td>
<td width="10%" align="right"><a href="2.7.html"><img border="0" src="right.png" alt="Next"></a></td>
</tr>
</table>


</body></html>

